//////////////////////////////////////////////////////////////////////////

#ifndef _MAPPARSERBASE_H_
#define _MAPPARSERBASE_H_

#include <fstream>

//////////////////////////////////////////////////////////////////////////

/** Base class for map parsers
*
*  @author   Anastasia Karpinska
*  @since    Mar 08th, 2010
*  @updated  May 03rd, 2010
*/
class MapParserBase
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    MapParserBase( const char* _fileName );


    /** Destructor */
    virtual ~MapParserBase();


    /** Parse map description file */
    void Parse();


//////////////////////////////////////////////////////////////////////////

protected:

//////////////////////////////////////////////////////////////////////////


    /** Set map size */
    virtual void SetMapSize( int _w, int _h ) = 0;


    /** Parse circle */
    virtual void ParseCircle() = 0;


    /** Parse rect */
    virtual void ParseRect() = 0;


    /** Parse polygon */
    virtual void ParsePolygon() = 0;


    /** Parse wall */
    virtual void ParseWall() = 0;


    /** Parse revival points */
    virtual void ParseRevivalPoints() = 0;


//////////////////////////////////////////////////////////////////////////


    /** Map file input stream */
    std::ifstream m_FileStream;


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
